import { parseHTML } from "./parseAst";
import { generate } from "./generate";
// 入口
// 将模板写法 转成render函数
export function compileToFunction(el) {
  // 0-html字符串变成ast语法树
  console.log(el, "开始编辑模板为ast语法树");
  let ast = parseHTML(el);
  console.log(ast, "astastast");
  // 1. 再将ast语法树转成render函数（1，ast语法树变成字符串 2.字符串变成函数）
  // console.log(ast,"astast")
  let code = generate(ast);
  console.log(code, "ast--转字符串");
  //3. 将render字符串变成函数  _c元素节点  _v 文本 _s变量-----关键点：：====关键点：：：
  let render = new Function(`with(this){return ${code}}`);
  // console.log(this,render,'render')
  //4. 将render函数返回出去使用
  return render;
}

// var person = {
//   name: "John",
//   age: 30
// };

// with (person) {
// 在这个作用域中，可以直接访问 person 的属性
// 不需要使用对象名字前缀
//   console.log(name); // 相当于 console.log(person.name);
//   console.log(age);  // 相当于 console.log(person.age);
// }
